//package com.hotelManager.www.filter;
//
//import com.hotelManager.www.po.User;
//import com.hotelManager.www.common.Result;
//import com.hotelManager.www.common.ResultCode;
//import com.google.gson.Gson;
//
//// 替换后
//import jakarta.servlet.*;
//import jakarta.servlet.annotation.WebFilter;
//import jakarta.servlet.http.HttpServletRequest;
//import jakarta.servlet.http.HttpServletResponse;
//import jakarta.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.Arrays;
//import java.util.List;
//
///**
// * 权限过滤器
// * 用于拦截请求并根据用户角色控制访问权限
// */
//@WebFilter("/*")
//public class AuthFilter implements Filter {
//    private final Gson gson = new Gson();
//
//    @Override
//    public void init(FilterConfig filterConfig) throws ServletException {
//        // 初始化过滤器
//    }
//
//    @Override
//    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
//            throws IOException, ServletException {
//        HttpServletRequest httpRequest = (HttpServletRequest) request;
//        HttpServletResponse httpResponse = (HttpServletResponse) response;
//        HttpSession session = httpRequest.getSession(false);
//
//        // 获取请求路径
//        String requestURI = httpRequest.getRequestURI();
//        String contextPath = httpRequest.getContextPath();
//        String path = requestURI.substring(contextPath.length());
//
//        // 允许访问的公共资源
//        List<String> publicResources = Arrays.asList(
//            "/", // 根路径
//            "/index.html", // 前端入口
//            "/assets", // 静态资源
//            "/favicon.ico",
//            "/css",
//            "/js",
//            "/images",
//            "/login",
//            "/register",
//            "/tourist",
//            "/auth"
//        );
//
//        // 检查是否是公共资源
//        boolean isPublicResource = publicResources.stream().anyMatch(path::startsWith);
//        if (isPublicResource) {
//            chain.doFilter(request, response);
//            return;
//        }
//
//        // 仅对后端接口做未登录拦截
//        if (path.startsWith("/admin") || path.startsWith("/merchant") || path.startsWith("/customer")) {
//            User user = session != null ? (User) session.getAttribute("user") : null;
//            if (user == null) {
//                String loginUrl = contextPath + "/login";
//                httpResponse.sendRedirect(loginUrl);
//                return;
//            }
//            // 根据用户角色控制访问权限
//            String role = user.getRole();
//            if (path.startsWith("/admin") && !"admin".equals(role)) {
//                httpResponse.setContentType("application/json;charset=UTF-8");
//                httpResponse.getWriter().write(gson.toJson(
//                    Result.failure(ResultCode.UNAUTHORIZED, "需要管理员权限")
//                ));
//                return;
//            }
//            if (path.startsWith("/merchant") && !"merchant".equals(role)) {
//                httpResponse.setContentType("application/json;charset=UTF-8");
//                httpResponse.getWriter().write(gson.toJson(
//                    Result.failure(ResultCode.UNAUTHORIZED, "需要商户权限")
//                ));
//                return;
//            }
//            if (path.startsWith("/customer") && !"customer".equals(role)) {
//                httpResponse.setContentType("application/json;charset=UTF-8");
//                httpResponse.getWriter().write(gson.toJson(
//                    Result.failure(ResultCode.UNAUTHORIZED, "需要客户权限")
//                ));
//                return;
//            }
//        }
//
//        // 通过权限检查，继续处理请求放行
//        chain.doFilter(request, response);
//    }
//
//    @Override
//    public void destroy() {
//        // 销毁过滤器
//    }
//}